package io.xccit.service;

import com.baomidou.mybatisplus.extension.service.IService;
import io.xccit.pojo.param.ProductByCategoryParam;
import io.xccit.pojo.param.ProductHotsParam;
import io.xccit.pojo.param.ProductIDParam;
import io.xccit.pojo.param.ProductSearchParam;
import io.xccit.pojo.product.Product;
import io.xccit.result.AjaxResult;
import io.xccit.to.OrderToProduct;

import java.util.List;

/**
 * @author CH_ywx
 * @date 2023-09-10
 * @description
 */
public interface IProductService extends IService<Product> {

    /**
     * 获取热门商品
     * @param categoryName
     * @return
     */
    AjaxResult promo(String categoryName);

    AjaxResult hotsProduct(ProductHotsParam productHotsParam);

    AjaxResult categoryList();

    AjaxResult selectProductByCategory(ProductByCategoryParam productByCategoryParam);

    AjaxResult detail(Integer productId);

    AjaxResult pictures(Integer productId);

    /**
     * 获取全部商品,使用远程调用异步操作同步至es
     * @return
     */
    List<Product> productList();

    /**
     * 搜索商品,使用关键字
     * @param productSearchParam
     * @return
     */
    AjaxResult searchProduct(ProductSearchParam productSearchParam);

    /**
     * 根据商品ID集合获取商品
     * @param productIds
     * @return
     */
    AjaxResult getProductByIds(List<Integer> productIds);

    /**
     * 获取购物车中的商品信息
     * @param productIds 商品ID集合
     * @return
     */
    List<Product> cartProductList(List<Integer> productIds);

    /**
     * 根据MQ消息的参数更新商品库存,增加销量
     * @param orderToProducts
     */
    void updateProductNum(List<OrderToProduct> orderToProducts);
}
